<?php

namespace app\controller;

use app\BaseController;
use app\tools\Tools;
use think\facade\Db;
use think\facade\View;

class Index extends BaseController
{
    public function index()
    {
        // 显示车位信息
        // 有多少空闲车位
        $free_count = Db::table("car_spaces")->where("status", "=", 0)->count();

        // 总共又多少车位
        $total = Db::table("car_spaces")->count();

        View::assign("free_count", $free_count);
        View::assign("total", $total);


        // 列出所有车位
        $spaces_objs = Db::table("car_spaces")->select()->toArray();

        foreach($spaces_objs as $key => &$item) {
            $car_name = $item["car_name"];

            // 通过公共字段 车的名称 进行关联查询
            $carObj = Db::table("cars")->where("name", "=", $car_name)->find();
            $spaces_objs[$key]["carObj"] = $carObj;
        }

        View::assign("spaces_objs", $spaces_objs);
        return view("index");
    }

    // 入库
    public function entry_car()
    {

        // 1.(假装是识别)接收车牌号
        $name = $this->request->post("name");
        $space_name = $this->request->post("space_name");

        // 2.入库
        //     > 2.1 判断此车是不是vip
        $carObj = Db::table("cars")->where("name", "=", $name)->find();
        if(!$carObj) {
            // 连记录都没有，不是vip
            // 入库，记录时间

            Db::table("cars")->insert([
                "id" => Tools::uid(),
                "name" => $name,
                "is_vip" => 0,
                "entry_at" => Tools::datetime(),
                "create_at" => Tools::datetime()
            ]);

            // 记录入库的车位号
            Db::table("car_spaces")->where("name", "=", $space_name)->update([
                "status" => 1,
                "car_name" => $name
            ]);

            return "尊贵的[" . $name . "]车主，欢迎光临!!!!!!";
        } else {
            // 有记录
            // 接着判断是否是vip
            if ($carObj["is_vip"] == 1) {
                // 是vip
                // 是否过期
                $exprie_time = $carObj["vip_exprie"];
                $exprie_timestamp = strtotime($exprie_time);

                // 获取当前时间戳
                $now_timestamp = Tools::timestamp();

                if($now_timestamp >= $exprie_timestamp) {

                    Db::table("cars")->where("name", "=", $name)->update([
                        "entry_at" => Tools::datetime(),
                        "is_vip" => 0,
                        "vip_exprie" => null,
                    ]);

                    // 记录入库的车位号
                    Db::table("car_spaces")->where("name", "=", $space_name)->update([
                        "status" => 1,
                        "car_name" => $name
                    ]);

                    // 包月会员过期
                    return "尊贵的VIP车主 [". $name ."] 您的会员已过期，如果要续费的话请及时续费, 车入库了。";
                } else {
                    // 没过期
                    return "尊贵的VIP车主 [". $name ."] 欢迎光临666, 祝您北大富硒康";
                }
            } else {
                // 不是vip
                return "异常情况. 请联系管理员处理";
            }
        }
    }

    public function leave_car()
    {
        $car_name = $this->request->post("name");

        // 出库逻辑
        $carObj = Db::table("cars")->where("name", "=", $car_name)->find();
        $entry_at = $carObj["entry_at"];
        $entry_timestamp = strtotime($entry_at);

        // 计算停车时间和费用
        $now_timestamp = Tools::timestamp();

        // $leave_count 停留多久，单位是秒
        $leave_seconds = $now_timestamp - $entry_timestamp;

        $leave_minutes = $leave_seconds / 60;
        if($leave_minutes < 15) {
            // 小于15分钟

            // 清理车库
            Db::table("car_spaces")->where("car_name", "=", $car_name)->update([
                "status" => 0,
                "car_name"=>null,
            ]);

            return "走吧。15分钟内, 把的真准";
        }

        // $leave_hour 停留小时数
        $leave_hour = $leave_seconds / 60 / 60;

        // 如果不足一小时按照一小时来算
        if(is_float($leave_hour)){
            $leave_hour = intval($leave_hour) + 1;
        }

        // 计算费用
        $price = 5;
        $total_money = $leave_hour * $price;

        // 判断会员

        if($carObj["is_vip"] == 1) {
            // 是会员
            // 有没有过期
            if(Tools::timestamp() >= strtotime($carObj["vip_exprie"])) {
                // 过期了
                echo "您的VIP过期了，如果需要续费，请联系管理员";
            } else {
                // 没过期
                // 清理车库
                Db::table("car_spaces")->where("car_name", "=", $car_name)->update([
                    "status" => 0,
                    "car_name"=>null,
                ]);

                return "你是会员，走吧";
            }

        } else {
            // 不是会员
        }

        View::assign("leave_hour", $leave_hour);
        View::assign("total_money", $total_money);
        View::assign("car_name", $car_name);


//        return "停留了 $leave_hour 小时, 需要支付: $total_money 元 <button>付钱了</button>";
        return view("pay");
    }

    public function pay()
    {
        $car_name = $this->request->get("car_name");

        // 清理车库
        Db::table("car_spaces")->where("car_name", "=", $car_name)->update([
            "status" => 0,
            "car_name"=>null,
        ]);

        return "已支付，一路顺风!!!";
    }
}